import * as cache from "/@/utils/cache/module"
import { defHttp } from "/@/utils/http/axios"
import { Api } from "/@/api/url"
import { RequestHeaderEnum } from "/@/enums/httpEnum"
/**
 * 从缓存中获取字典配置
 * @param code
 */
export const getDictItemsByCode = (code) => {
  if (cache.getDictItems() && cache.getDictItems()[code]) {
    return cache.getDictItems()[code]
  }
}
/**
 * 获取字典数组
 * @param dictCode 字典Code
 * @return List<Map>
 */
export const initDictOptions = (code, appId?: string) => {
  //1.优先从缓存中读取字典配置
  if (!appId && getDictItemsByCode(code)) {
    return new Promise((resolve, reject) => {
      resolve(getDictItemsByCode(code))
    })
  }
  //2.获取字典数组
  // 字典数据请求前将参数编码处理，但是不能直接编码，因为可能之前已经编码过了
  if (code.indexOf(",") > 0 && code.indexOf(" ") > 0) {
    // 编码后类似sys_user%20where%20username%20like%20xxx' 是不包含空格的,这里判断如果有空格和逗号说明需要编码处理
    code = encodeURI(code)
  }

  const headers = {}
  if (appId) {
    headers[RequestHeaderEnum.APP_ID] = appId
  }

  return defHttp.get({ url: `${Api.listDictItem}?typeCode=${code}`, headers })
}

/**
 * 获取字典数组
 * @param code 字典Code
 * @param params 查询参数
 * @param options 查询配置
 * @return List<Map>
 */
export const ajaxGetDictItems = (code, params, options?) => defHttp.get({ url: `${Api.listDictItem}?typeCode=${code}`, params }, options)
